package com.bzr.emos.wx.controller;

import com.bzr.emos.wx.common.util.R;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContext;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Collection;


@RestController
public class IndexController {

    @GetMapping("/")
    public R index() {

        // 获取当前的安全上下文，其中包含用户的认证信息
        SecurityContext context = SecurityContextHolder.getContext();

// 从安全上下文中获取用户的认证对象（包含身份信息、凭证、权限等）
        Authentication authentication = context.getAuthentication();

// 获取认证主体（通常为用户信息对象。未认证时可能是字符串"anonymousUser"）
        Object principal = authentication.getPrincipal();

// 获取认证凭证（通常是密码，认证后可能被清除，实际可能为null）
        Object credentials = authentication.getCredentials();

// 获取用户被授予的权限集合（如角色ROLE_ADMIN、权限标识等）
// 注意：GrantedAuthority可以是角色或其他自定义权限标识
        Collection<? extends GrantedAuthority> authorities = authentication.getAuthorities();

// 获取用户名（对于大多数认证方式，这会返回principal的字符串形式）
        String username = authentication.getName();

// 返回包含用户名和权限信息的响应对象
// 注意：实际项目中可能需要将权限转换为字符串集合再返回
// 安全提示：不应返回敏感信息如credentials
        return R.ok()
                .put("username", username)
                .put("authorities", authorities);



    }


}
